Номера задач. Схема Master/Slave(s)
Использование выделенного упаковщика
Флаги при многолинейной работе
T-Mail является многолинейным мэйлером. Один экземпляр T-Mail может обслуживать только одну линию связи,
однако, предусмотрена возможность одновременной работы нескольких экземпляров T-Mail в многозадачной среде (локальная сеть, multitasker DOS - DESQview, Windows и т.п., или OS/2). При работе в многозадачных средах T-Mail отдает процессору неиспользуемые интервалы
процессорного времени (timeslices).
В случае использования в
системе нескольких линий и, как следствие, нескольких задач T-Mail, работающих одновременно, используется
разграничение функций каждой из этих задач. Выделяется только одна задача,
которая будет заниматься упаковкой почты (Master), она может выполнять все обычные функции или же
вы можете снять с нее обязанности по управлению модемом (см. раздел
"Использование выделенного упаковщика" в этой же главе). Остальные
задачи (Slave) упаковкой почты не занимаются, они только работают с модемами и могут
распаковывать пришедшую на их линию почту. Передача информации между задачами Slave и Master осуществляется
через специальные временные файлы и флаги (см. ниже).
Для нормального
"разделения обязанностей" каждому экземпляру программы t-mail.exe, запущенному в многолинейной системе, должен быть
задан уникальный номер задачи. Это делается с помощью ключа -N при запуске t-mail.exe:
T-MAIL -N1═════════ -
номер задачи (task ident) 1═ (по
умолчанию)
T-MAIL -N3═════════ - ----- " ------══════════ 3
В некоммерческой версии T-Mail можно использовать только задачи с номерами 0, 1
и 2. В коммерческих версиях можно использовать в одной системе до 255 задач (в
зависимости от категории) с номерами 0...254.
В файлах конфигурации для
обозначения номера задачи можно использовать специальную переменную %TASKNO% (см. главу 7,
раздел "использование переменных окружения (environment)"). Вместо этой переменной будет подставлен
номер конкретной задачи, заданный ключом -N в командной строке.
Кроме того, мэйлеры
должны использоваться по схеме Master/Slave (ведущий/ведомые). Для этого в файле t-mail.ctl одному из экземпляров T-Mail сообщается, что он Master, а остальным - что они Slave, например:
[1] Task_Mode═════ Master
[2] Task_Mode═════ Slave
[3] Task_Mode═════ Slave
Тот T-Mail, который был запущен с ключом -N1 возьмет на себя функции
упаковщика. Остальные будут через временный файл получать информацию об очереди
и специальными флагами сообщать T-Mail/master о необходимости той или иной обработки. Таким
образом, только один экземпляр T-Mail будет просматривать письма и готовить их к
отправке.
Поскольку файлы t-mail.ctl и events.ctl, как правило, являются общими для всех экземпляров, в этом случае придется для некоторых переменных использовать поле <task ident>. Например:
[1]═ Log═ T-Mail1.log
[2]═ Log═ T-Mail2.log
[3]═ Log═ T-Mail3.log
или эквивалентное
выражение:
Log═ T-Mail%TASKNO%.log
Просмотр почты, создание
пакетов и другие функции, которые выполняет T-Mail/master, могут занимать длительное время, например, если
для обработки эхопочты T-Mail
запускает эхопроцессор.
В этом случае можно
использовать один из экземпляров T-Mail только для этих целей, "отключив его от
модема". Это достигается заданием в качестве COM-порта 0:
Пример (t-mail.ctl):
[1] Task_Mode══ Master
[2] Task_Mode══ Slave
[1] Port═ 0
[2] Port═ 1
В этом случае T-Mail/master будет выполнять только функции упаковки, запуска внешних программ и т.п.
В схеме Master/Slave(s) есть еще одна
возможность распределения функций между задачами. Для этого служат флаги.
Поясним это на примере:
Пример (t-mail.ctl):
[1] Task_Mode══ Master
[2] Task_Mode══ Slave
...
[1] Process_Flag═ anyarc.t-m═ c:\t-mail\_echoes.bat
[2] Process══════ ArcMail════ Create anyarc.t-m
...
Как видно, T-Mail/slave в этом случае по приходу эхопочты создаст флаг anyarc.t-m. Заметив этот флаг, T-Mail/master запустит соответствующий процесс, определенный
конструкцией Process_Flag для
этого флага.
В версиях T-Mail для OS/2
и Windows NT
вместо файлов-флагов можно использовать системные семафоры. Они используются
аналогично, но располагаются не на дисковом устройстве, а в оперативной памяти.
Для того, чтобы T-Mail
знал, что флаг является не файлом, а системным семафором, имя семафора должно
начинаться со строки "\SEM32\", например: \SEM32\arcmail.t-m.
Таким же образом можно
распределять и другие функции.